Mac安装Bootchart
下载
通过下面链接下载bootchart
源码:bootchart-0.9.tar.bz2
安装
解压缩,因为是ant构建的,需要安装ant
brew install ant
进入源码目录,执行
ant
目录会生成bootchart.jar
使用
然后手机开启Bootchart
的过程最终会生成bootchart.tgz
的文件,这个文件就是要处理的源文件,通过下面命令,可以在当前目录生成png图片。
java -jar bootchar.jar /path/to/bootchart.tgz
Android开启Bootchart
在旧版Android中(6.0之前版本)需要修改一些文件,重新编译boot.img才可以开启bootchart
,这个修改方法可以上网搜索一下。现在的Android系统已经配置好bootchart
,只需要做以下操作就可以启动:
//在data/bootchart/目录中新建start文件
adb shell 'touch /data/bootchart/start'
/*
* 在start文件中写入采用时间timeout=120s
* 这里的时间可以自定义,通过查看源代码可知最长时间不能超过10*60 s
*/
adb shell 'echo 120 > /data/bootchart/start'
//在data/bootchart/目录中新建stop文件
adb shell 'touch /data/bootchart/stop'
//在stop文件中写入1标记,用于停止采集数据
adb shell 'echo 1 > /data/bootchart/stop'
重启之后,看到/data/bootchart/
目录下文件为:
header
kernel_pacct
proc_diskstats.log
proc_ps.log
proc_stat.log
start
那可以看到stop文件消失了。所以这里需要注意把start文件也删除,不然下次重启手机又会启动bootchart
,而启动它是要耗费资源的。
采集数据
可以把生成出来的5个文件pull出来打包,也可以使用系统提供的脚本做这个操作。系统脚本在 AOSP/system/core/init/grab-bootchart.sh
。我把脚本放在前面bootchart源码目录中,然后做了一些修改以适应我的开发环境。
#!/bin/sh
#
# This script is used to retrieve a bootchart log generated by init.
# All options are passed to adb, for better or for worse.
# See the readme in this directory for more on bootcharting.
TMPDIR=~/Temp
rm -rf $TMPDIR
mkdir -p $TMPDIR
# log在手机的路径
LOGROOT=/data/bootchart
TARBALL=bootchart.tgz
# 5个文件
FILES="header proc_stat.log proc_ps.log proc_diskstats.log kernel_pacct"
# 把文件pull到本地电脑
for f in $FILES; do
adb "${@}" pull $LOGROOT/$f $TMPDIR/$f 2>&1 > /dev/null
done
# 文件打包
(cd $TMPDIR && tar -czf $TARBALL $FILES)
#bootchart ${TMPDIR}/${TARBALL}
#gnome-open ${TARBALL%.tgz}.png
# 通过bootchart源码生成png 这和linux环境不一样
java -jar bootchart.jar ${TMPDIR}/bootchart.tgz
rm -rf $TMPDIR
echo "./${TARBALL%.tgz}.png is generated"
这样就能生成直观的开机状态统计图了。